<!DOCTYPE html>

<html lang="en" data-content_root="../">
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />

  <title>Swift_COMPILATION_MODE &mdash; CMake 4.1.1 Documentation</title>

    <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=a2c47e09" />
    <link rel="stylesheet" type="text/css" href="../_static/cmake.css?v=4d06bd55" />
    
    <script src="../_static/documentation_options.js?v=e6a937a4"></script>
    <script src="../_static/doctools.js?v=9bcbadda"></script>
    <script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
    
    <link rel="icon" href="../_static/cmake-favicon.ico"/>
    <link rel="index" title="Index" href="../genindex.html" />
    <link rel="search" title="Search" href="../search.html" />
    <link rel="next" title="Swift_DEPENDENCIES_FILE" href="Swift_DEPENDENCIES_FILE.html" />
    <link rel="prev" title="SUFFIX" href="SUFFIX.html" />
 

  </head><body>
    <input id="sidebar-check" type="checkbox" />
    <label id="sidebar-overlay" for="sidebar-check"></label>



    <div class="related relbar1" role="navigation" aria-label="Related">
      <h3>Navigation</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="../genindex.html" title="General Index"
             accesskey="I">index</a></li>
        <li class="right" >
          <a href="Swift_DEPENDENCIES_FILE.html" title="Swift_DEPENDENCIES_FILE"
             accesskey="N">next</a> |</li>
        <li class="right" >
          <a href="SUFFIX.html" title="SUFFIX"
             accesskey="P">previous</a> |</li>
  <li>
    <label class="sidebar-toggle" for="sidebar-check"></label>
  </li>
  <li class="rootlink">
    <img src="../_static/cmake-logo-16.png" width="16" height="16" alt=""/>
    <a href="https://cmake.org/">CMake 4.1.1</a>
    <span class="reldelim1"> &#187;</span>
  </li>
  <li>
    <a href="../index.html">Documentation</a> &#187;
  </li>

          <li class="nav-item nav-item-1"><a href="../manual/cmake-properties.7.html" accesskey="U">cmake-properties(7)</a> &#187;</li>
        <li class="nav-item nav-item-this"><a href="">Swift_COMPILATION_MODE</a></li> 
      </ul>
    </div>  

    <div class="document">
      <div class="documentwrapper">
        <div class="bodywrapper">
          <div class="body" role="main">
            
  <section id="swift-compilation-mode">
<span id="prop_tgt:Swift_COMPILATION_MODE"></span><h1>Swift_COMPILATION_MODE<a class="headerlink" href="#swift-compilation-mode" title="Link to this heading">¶</a></h1>
<div class="versionadded">
<p><span class="versionmodified added">Added in version 3.29.</span></p>
</div>
<p>Specify how Swift compiles a target.</p>
<p>The allowed values are:</p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">incremental</span></code></dt><dd><p>Compiles each Swift source in the module separately, resulting in better
parallelism in the build. The compiler emits additional information into
the build directory improving rebuild performance when small changes are made
to the source between rebuilds. This is the best option to use while
iterating on changes in a project.</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">wholemodule</span></code></dt><dd><p>Whole-module optimizations are slowest to compile, but results in the most
optimized library. The entire context is loaded into once instance of the
compiler, so there is no parallelism across source files in the module.</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">singlefile</span></code></dt><dd><p>Compiles each source in a Swift modules separately, resulting in better
parallelism. Unlike the <code class="docutils literal notranslate"><span class="pre">incremental</span></code> build mode, no additional information
is emitted by the compiler during the build, so rebuilding after making small
changes to the source file will not run faster. This option should be used
sparingly, preferring <code class="docutils literal notranslate"><span class="pre">incremental</span></code> builds, unless working around a compiler
bug.</p>
</dd>
</dl>
<p>Use <span class="target" id="index-0-manual:cmake-generator-expressions(7)"></span><a class="reference internal" href="../manual/cmake-generator-expressions.7.html#manual:cmake-generator-expressions(7)" title="cmake-generator-expressions(7)"><code class="xref cmake cmake-manual docutils literal notranslate"><span class="pre">generator</span> <span class="pre">expressions</span></code></a> to support
per-configuration specification. For example, the code:</p>
<div class="highlight-cmake notranslate"><div class="highlight"><pre><span></span><span class="nf">add_library(</span><span class="nb">foo</span><span class="w"> </span><span class="nb">foo.swift</span><span class="nf">)</span>
<span class="nf">set_property(</span><span class="no">TARGET</span><span class="w"> </span><span class="nb">foo</span><span class="w"> </span><span class="no">PROPERTY</span>
<span class="w">  </span><span class="nb">Swift_COMPILATION_MODE</span><span class="w"> </span><span class="s">&quot;$&lt;IF:$&lt;CONFIG:Release&gt;,wholemodule,incremental&gt;&quot;</span><span class="nf">)</span>
</pre></div>
</div>
<p>sets the Swift compilation mode to wholemodule mode in the release configuration
and sets the property to incremental mode in other configurations.</p>
<p>The property is initialized from the value of the
<span class="target" id="index-0-variable:CMAKE_Swift_COMPILATION_MODE"></span><a class="reference internal" href="../variable/CMAKE_Swift_COMPILATION_MODE.html#variable:CMAKE_Swift_COMPILATION_MODE" title="CMAKE_Swift_COMPILATION_MODE"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CMAKE_Swift_COMPILATION_MODE</span></code></a> variable, if it is set. If the property
is not set or is empty, then CMake uses the default value <code class="docutils literal notranslate"><span class="pre">incremental</span></code> to
specify the swift compilation mode.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>This property only has effect when policy <span class="target" id="index-0-policy:CMP0157"></span><a class="reference internal" href="../policy/CMP0157.html#policy:CMP0157" title="CMP0157"><code class="xref cmake cmake-policy docutils literal notranslate"><span class="pre">CMP0157</span></code></a> is set to <code class="docutils literal notranslate"><span class="pre">NEW</span></code>
prior to the first <span class="target" id="index-0-command:project"></span><a class="reference internal" href="../command/project.html#command:project" title="project"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">project()</span></code></a> or <span class="target" id="index-0-command:enable_language"></span><a class="reference internal" href="../command/enable_language.html#command:enable_language" title="enable_language"><code class="xref cmake cmake-command docutils literal notranslate"><span class="pre">enable_language()</span></code></a> command
that enables the Swift language.</p>
</div>
</section>


            <div class="clearer"></div>
          </div>
        </div>
      </div>
      <div class="sphinxsidebar" role="navigation" aria-label="Main">
        <div class="sphinxsidebarwrapper">
  <div>
    <h4>Previous topic</h4>
    <p class="topless"><a href="SUFFIX.html"
                          title="previous chapter">SUFFIX</a></p>
  </div>
  <div>
    <h4>Next topic</h4>
    <p class="topless"><a href="Swift_DEPENDENCIES_FILE.html"
                          title="next chapter">Swift_DEPENDENCIES_FILE</a></p>
  </div>
  <div role="note" aria-label="source link">
    <h3>This Page</h3>
    <ul class="this-page-menu">
      <li><a href="../_sources/prop_tgt/Swift_COMPILATION_MODE.rst.txt"
            rel="nofollow">Show Source</a></li>
    </ul>
   </div>
<search id="searchbox" style="display: none" role="search">
  <h3 id="searchlabel">Quick search</h3>
    <div class="searchformwrapper">
    <form class="search" action="../search.html" method="get">
      <input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
      <input type="submit" value="Go" />
    </form>
    </div>
</search>
<script>document.getElementById('searchbox').style.display = "block"</script>
        </div>
      </div>
      <div class="clearer"></div>
    </div>
    <div class="related" role="navigation" aria-label="Related">
      <h3>Navigation</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="../genindex.html" title="General Index"
             >index</a></li>
        <li class="right" >
          <a href="Swift_DEPENDENCIES_FILE.html" title="Swift_DEPENDENCIES_FILE"
             >next</a> |</li>
        <li class="right" >
          <a href="SUFFIX.html" title="SUFFIX"
             >previous</a> |</li>
  <li>
    <label class="sidebar-toggle" for="sidebar-check"></label>
  </li>
  <li class="rootlink">
    <img src="../_static/cmake-logo-16.png" width="16" height="16" alt=""/>
    <a href="https://cmake.org/">CMake 4.1.1</a>
    <span class="reldelim1"> &#187;</span>
  </li>
  <li>
    <a href="../index.html">Documentation</a> &#187;
  </li>

          <li class="nav-item nav-item-1"><a href="../manual/cmake-properties.7.html" >cmake-properties(7)</a> &#187;</li>
        <li class="nav-item nav-item-this"><a href="">Swift_COMPILATION_MODE</a></li> 
      </ul>
    </div>

    <div class="footer" role="contentinfo">
    &#169; Copyright 2000-2025 Kitware, Inc. and Contributors.
      Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3.
    </div>
<script type="text/javascript">
(function() {
  "use strict";
  const hide = () => document.getElementById("sidebar-check").checked = false;
  addEventListener("keydown", e => (e.key === "Escape") && hide());
  addEventListener("click", e => (e.target.tagName === "A") && hide());
  addEventListener("hashchange", hide)
})();
</script>
  </body>
</html>